/*
 * @Author: FANQIELAN
 * @Date: 2024-11-22 10:24:54
 * @LastEditors: FANQIELAN
 * @LastEditTime: 2024-11-22 19:47:51
 * @FilePath: \embedded-learning\DataStructure\C\include\C_SeqList.h
 * @Description: 
 * 本头文件定义了顺序表的相关结构体和操作函数，支持静态顺序表和动态顺序表的实现。
 * 包括：
 *    1. 静态顺序表：基于固定大小数组实现，容量不可扩展。
 *    2. 动态顺序表：通过动态内存分配实现，可按需扩展容量。
 * Copyright (c) 2024 by FANQIELAN, All Rights Reserved. 
 */

#ifndef __C_SEQLIST_H
#define __C_SEQLIST_H

// 系统库文件
#include <stdio.h>
#include <stdlib.h>

// 宏定义
#define MAX_SIZE    10
#define INIT_SIZE   10

/**
 * @description: 定义一个顺序表结构体。
 *               定义长度为MAX_SIZE的数组和有效表长。
 */
typedef struct
{
    int data[MAX_SIZE];
    int length;
} SeqList;

/**
 * @description: 定义一个顺序表结构体。
 *               定义执行数据的指针，最大元素数量，有效表长。
 */
typedef struct
{
    int *data;
    int MaxSize;
    int length;
} SeqList_Malloc;

// 静态顺序表: 无法增删顺序表
void InitList(SeqList *L);

// 动态顺序表：通过指针方法增删顺序表
void InitList_Malloc(SeqList_Malloc *L);
void IncreaseSize_Malloc(SeqList_Malloc *L, int len);

// 打印顺序表
void PrintList(SeqList_Malloc *L);

#endif  /* __C_SEQLIST_H */
